其他
猎户座-持续打造爱奇艺海外高扩展性的策略引擎项目
海外策略引擎在去年年底已经上线第一版策略引擎 1.0,主要支撑了 Phone 后端的精细化运营等相关功能,具有后台配置简单,实现实时圈人功能,接口性能响应时间快等优势。海外策略引擎 1.0 的设计主要考虑的是与目前海外后端使用的 IQCard 相结合,着眼于快速支撑当时的产品需求。随着业务的不停迭代以及公司的降本提效的战略转移,精细化运营的使用场景和需要精细化运营的业务团队逐渐增多。在这种背景下,我们对策略引擎 2.0 进行了系统全面的设计,以期实现高效、稳定,灵活、可扩展,业务隔离的策略引擎。
本文主要介绍在策略引擎 2.0 项目建设过程中的一些经验和遇到的挑战和思考。
01
项目基础信息
通用标签:用户画像数据和标签数据一一对应甚至是含义完全相同,不需要任何转化。这类标签通过标签配置后台指定数据源实现配置。 复杂标签:用户画像数据和标签数据有一层转化关系,即需要通过适当的逻辑关系转化才能将用户画像存储的数据与产品需要的标签数据对应起来。有定制转化逻辑,这就需要进行代码的定制化。此类标签主要通过标签配置后台和定制化代码共同完成。
数据隔离:运营配置的数据只有该运营同一业务线的人才可以看到,同样,策略引擎获取数据的时候,只返回同一业务的数据。 流量隔离:某一业务线出现的流量异常情况不影响其他业务线的正常流量请求。更不能导致整个策略引擎系统故障。
02
技术实现介绍
标签数值的数据类型 标签所属的业务方 标签所属分组 标签支持的运算符 标签的可选值 标签从DMP中获取的字段 标签进行的相关转化封装逻辑
数据类型主要包含有, date 、 boolean 、数字型、字符串型等。一个标签只能有一个数据类型与之关联。比如年龄只能是数字,会员类型只能是字符串,而会员过期时间是一个日期。 标签所属业务方,主要对标签进行分类。策略引擎属于基础服务,需要被需要的业务方共同使用,不同的业务方可以按照自己需要配置不同标签。 标签所属的分组,为了方便策略管理后台的配置,将众多的标签进行归纳。该级别在所属业务方之下。 标签支持的运算符包含有存在于、小于、小于等于、等于、大于、大于等于、区间(左闭右闭)、区间(左开右闭)、区间(左闭右开)、区间(左开右开)等。一个标签可以同时支持多个不同的运算符。 标签的可选值,与标签值相关。该处又可分为,配置、调用第三方服务以及手动输入和时间插件。
场景化思考
可扩展的数据结构
策略查询是找到使用方传入的策略 id 所对应的策略内容详情。主要包括有策略的 id 查找详情和无策略的 id 查找详情。 特征查询即主要包含三块,通过 qyid 查找脸谱用户画像特征数据,通过 uid 查找脸谱用户画像特征数据,查找 Bi 用户画像特征数据。对于端上携带的用户信息则有接口直接传入。 逻辑转化又可称为规则数据转化。通过策略查询,获取到策略管理后台配置的策略详情数据。策略详情数据包含一条或多条规则,而规则相对应的标签会指定特征数据的查找地址。逻辑转化具体的执行逻辑见下图。 策略命中是将所有待匹配的规则进行对比,全部命中即为该条规则命中。
扩展性思考
性能保障
对整个请求流进程全局梳理,对前后无依赖的执行归类为一步,每步内使用合适的并发执行。 使用全局线程池,减少线程开销。
资源隔离
策略管理后台增加业务线和权限功能,产品运营只能看到属于自己业务线的内容;策略匹配服务校验业务线标示,只能获取本条业务线内的数据。 策略匹配服务针对接入的业务方,提供业务方相关的 QPS ,一旦超过阈值,报警、降级过量请求,避免单条业务线的问题拖垮策略引擎而扩大影响范围。
03